/*
 * Simple Xlib application drawing a box in a window.
 */

#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
  struct _XDisplay *d;
  int s;
  Window w;
  XEvent e;

  /* To open a connection to the X server that controls a display*/
  d = XOpenDisplay(NULL);
  if (d == NULL) {
    printf("Cannot open display\n");
    exit(1);
  }

  /* Both return the default screen number referenced by the XOpenDisplay()
   * function */
  s = DefaultScreen(d);
  w = RootWindow(d, s);

  GC gc = XCreateGC(d, w, 0, 0);
  while (1) {

    XDrawLine(d, w, gc, 10, 60, 180, 20);
    XFlush(d);
  }
  //   /* create window */
  //   w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 100, 100, 1,
  //                           BlackPixel(d, s), WhitePixel(d, s));

  /* select kind of events we are interested in */
  XSelectInput(d, w, ExposureMask | KeyPressMask);

  /* map (show) the window */
  XMapWindow(d, w);

  /* event loop */
  while (1) {
    XNextEvent(d, &e);
    /* draw or redraw the window */
    if (e.type == Expose) {
      XFillRectangle(d, w, DefaultGC(d, s), 10, 10, 100, 100);
    }
    /* exit on key press */
    if (e.type == KeyPress)
      break;
  }

  /* close connection to server */
  XCloseDisplay(d);

  return 0;
}
